/**
 * @author flymyd
 */
const {build} = require('./build');
const {buildV2} = require('./buildV2');
const {packageDist} = require('./packageDist');

// 添加错误处理和退出机制
function main() {
    try {
        const projectName = process.argv[2]; // 更简洁的写法
        const vueVersion = process.argv[3];

        if (!projectName) {
            throw new Error('项目名称未指定');
        }

        console.log(`开始构建项目: ${projectName}, Vue版本: ${vueVersion}`);

        // 执行构建
        let buildResult;
        if (vueVersion === "2") {
            buildResult = buildV2(projectName);
        } else {
            buildResult = build(projectName);
        }

        if (!buildResult) {
            throw new Error('构建失败');
        }

        console.log('构建成功，开始打包...');

        // 执行打包
        const packageResult = packageDist(projectName);
        if (!packageResult) {
            throw new Error('打包失败');
        }

        console.log('✅ 构建与打包完成！', packageResult);
        process.exit(0); // 显式成功退出

    } catch (err) {
        console.error('❌ 构建流程出错:', err.message || err);
        process.exit(1); // 显式失败退出
    }
}

// 启动主函数
main();

// 捕获未处理的 Promise 异常（兜底）
process.on('unhandledRejection', (reason, promise) => {
    console.error('❌ 未处理的 Promise Rejection:', reason);
    process.exit(1);
});

// 捕获未捕获的异常（兜底）
process.on('uncaughtException', (err) => {
    console.error('❌ 未捕获的异常:', err);
    process.exit(1);
});